package com.java.star.mall.front.service;

import com.java.star.mall.front.pojo.param.AddCartParam;
import com.java.star.mall.front.pojo.param.UpdateCartCheckedParam;
import com.java.star.mall.front.pojo.param.UpdateCartNumParam;
import com.java.star.mall.front.pojo.vo.CartVO;

import java.util.List;

public interface CartService {

    /**
     * 查询购物车
     *
     * @return 购物车
     */
    List<CartVO> listCart();

    /**
     * 添加购物车商品
     *
     * @param addCartParam 购物车商品参数
     */
    void addToCart(AddCartParam addCartParam);

    /**
     * 批量修改购物车的选中状态
     *
     * @param checked true：选中 false：不选中
     */
    void batchChangeChecked(Boolean checked);

    /**
     * 修改购物车购物项的选中状态
     *
     * @param updateCartCheckedParam 修改购物车商品项选中状态参数
     */
    void changeChecked(UpdateCartCheckedParam updateCartCheckedParam);

    /**
     * 修改购物项的数量
     *
     * @param updateCartNumParam 修改购物项参数
     */
    void changeNum(UpdateCartNumParam updateCartNumParam);

    /**
     * 删除购物车商品
     *
     * @param productId 商品id
     */
    void deleteToCart(Integer productId);

    /**
     * 查询已选中的购物车项
     *
     * @param userId 用户id
     * @return 已选中购物车商品列表
     */
    List<CartVO> listCheckedItem(Integer userId);
}
